package com.oig.sys.file.api;

import com.oig.common.module.SysRequest;
import com.oig.common.module.SysResponse;
import com.oig.sys.file.api.factory.FileInfoFallBackFactory;
import com.oig.sys.file.dto.BusFileInfoDto;
import com.oig.sys.file.dto.FileInfoDto;
import com.oig.sys.file.vo.FileInfoVo;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;

import java.util.List;

@FeignClient(contextId = "fileInfoService", value = "sys-file-server", path = "/fileInfo",fallbackFactory = FileInfoFallBackFactory.class)
public interface FileInfoService {

    /**
     * 加单个附件记录
     */
    @PostMapping("/add")
    FileInfoVo addFileInfo(@RequestBody FileInfoDto fileInfoDto);

    /**
     * 更新附件文件
     */
    @PostMapping("/update")
    FileInfoVo updateFileInfo(@RequestBody FileInfoDto fileInfoDto);

    /**
     * 多个附件更新或新增附件文件
     */
    @PostMapping("/updateRelationAllFileInfo")
    List<FileInfoVo> updateRelationAllFileInfo(@RequestBody BusFileInfoDto busFileInfoDto);

    /**
     * 批量删除文件信息  删除关联单据下的所有文件
     */
    @PostMapping("/delRelationAllFileInfo")
    SysResponse<String> delRelationAllFileInfo(@RequestBody BusFileInfoDto busFileInfoDto);

    /**
     * 注销附件记录
     */
    @PostMapping("/cancel/{id}")
    FileInfoVo cancelFileInfo(@PathVariable("id") Integer id);

    /**
     * 物理删除附件
     */
    @PostMapping("/del/{id}")
    SysResponse<Integer> delFileInfo(@PathVariable("id") Integer id);

    /**
     * 获取附件信息
     */
    @PostMapping("/info/{id}")
    FileInfoVo info(@PathVariable("id") Integer id);


    /**
     * 获取业务主单据下的附件
     */
    @PostMapping("/list")
    List<FileInfoVo> list(@RequestBody SysRequest<FileInfoDto> fileInfoRequest);



    /**
     * 批量加单个附件记录
     */
    @PostMapping("/addBatchFile")
    List<FileInfoVo> addBatchFile(@RequestBody List<FileInfoDto> fileInfoDtoList);


}
